pub fn convert_base(num_str: &str, to_base: u32) -> String {
    // 提取数字和源进制
    let parts: Vec<&str> = num_str.split('(').collect();
    let number = parts[0];
    let from_base: u32 = parts[1].trim_end_matches(')').parse().unwrap();

    // 将源进制的数字转换为十进制
    let decimal_value = from_base_to_decimal(number, from_base);

    // 将十进制转换为目标进制
    decimal_to_base(decimal_value, to_base)
}

// 从任意进制转换到十进制
fn from_base_to_decimal(number: &str, base: u32) -> u32 {
    let mut result = 0;
    let digits = number.chars().rev();

    for (i, digit) in digits.enumerate() {
        let value = digit.to_digit(base).expect("Invalid digit");
        result += value * base.pow(i as u32);
    }

    result
}

// 将十进制转换为任意进制
fn decimal_to_base(mut num: u32, base: u32) -> String {
    if num == 0 {
        return "0".to_string();
    }

    let mut result = String::new();
    while num > 0 {
        let remainder = num % base;
        result.push(char::from_digit(remainder, base).unwrap());
        num /= base;
    }

    // 反转字符串，因为我们是从低位到高位构建的
    result.chars().rev().collect()
}
